package cn.ld.module.ai.service.knowledge;

import cn.ld.framework.common.pojo.PageResult;
import cn.ld.module.ai.controller.admin.knowledge.vo.knowledge.AiKnowledgeCreateInVO;
import cn.ld.module.ai.controller.admin.knowledge.vo.knowledge.AiKnowledgePageInVO;
import cn.ld.module.ai.controller.admin.knowledge.vo.knowledge.AiKnowledgeUpdateInVO;
import cn.ld.module.ai.dal.entity.knowledge.AiKnowledgeEntity;
import org.springframework.ai.vectorstore.VectorStore;

/**
 * AI 知识库-基础信息 Service 接口
 *
 * @author xiaoxin
 */
public interface AiKnowledgeService {

    /**
     * 创建知识库
     *
     * @param createInVO 创建信息
     * @param userId      用户编号
     * @return 编号
     */
    Long createKnowledge(AiKnowledgeCreateInVO createInVO, Long userId);

    /**
     * 更新知识库
     *
     * @param updateInVO 更新信息
     * @param userId      用户编号
     */
    void updateKnowledge(AiKnowledgeUpdateInVO updateInVO, Long userId);

    /**
     * 校验知识库是否存在
     *
     * @param id 记录编号
     */
    AiKnowledgeEntity validateKnowledgeExists(Long id);

    /**
     * 获得知识库分页
     *
     * @param userId    用户编号
     * @param pageInVO 分页查询
     * @return 知识库分页
     */
    PageResult<AiKnowledgeEntity> getKnowledgePage(Long userId, AiKnowledgePageInVO pageInVO);

    /**
     * 根据知识库编号获取向量存储实例
     *
     * @param id 知识库编号
     * @return 向量存储实例
     */
    VectorStore getVectorStoreById(Long id);

}
